The present invention relates to validation of content cached in a packet-switched data network.
Data networks, such as packet-switched networks based on the TCP/IP protocol suite, can be utilized to distribute a rich array of digital content to a variety of different client applications. Some of the most popular applications on the Internet today are browsing applications for searching the World Wide Web, e.g. Mozilla, Netscape Navigator, Opera, or Microsoft Internet Explorer, which utilize the HyperText Transfer Protocol (HTTP) to retrieve data objects such as documents written in the HyperText Markup Language (HTML) along with embedded content. See, e.g., R. Fielding et al., “Hypertext Transfer Protocol—HTTP/1.1,” Internet Engineering Task Force (IETF), Request for Comments (RFC) 2616, 2068, Network Working Group, 1999; T. Berners-Lee et al., “Hypertext Transfer Protocol—HTTP/1.0,” IETF, RFC 1945, Network Working Group, 1996; which are incorporated by reference herein.
It is often advantageous to cache content at an intermediary between a client and remote server, to reduce user-perceived latency, server load, and to avoid burdening the network with multiple requests for the same content. The difficulty with caching resources at a proxy cache or within a browser cache is an issue referred to in the art as “cache coherency”—namely, ensuring that the proxy knows that the cached resource is still current. Both HTTP/1.0 and the newer HTTP/1.1 provide mechanisms for validating cached objects with an authoritative server or an origin server. For example, a client/proxy can issue what is referred to as a conditional (“If-Modified-Since” (IMS) or “E-tag” based) GET request, to which the server responds with a “304” response if the object has not been modified since the specified date (“304” being the HTTP response code for “Not Modified”). A full copy of the resource is not provided to the client/proxy unless the cached copy is no longer current. Most current caching platforms validate their content passively, i.e. when a client request arrives and the cached copy of the object is “stale” in accordance with some freshness metric. It can be shown experimentally, however, that a considerable fraction of validation traffic on the Internet today involves stale cached copies that turned out to be current. These validations of currently cached objects have small message size, but, nonetheless, often induce latency comparable to full-fledged cache misses.
Accordingly, it would be desirable to improve the latency incurred by cache clients by minimizing unnecessary validation traffic.